﻿using Abp.Domain.Entities;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace AVIS.OutBound.RateCodes
{
    [Table("avisRateCode")]
    public class RateCode : AvisBaseEntity
    {
        /// <summary>
        /// 套餐编号
        /// </summary>
        public string Code { get; set; }

        /// <summary>
        /// 套餐名称
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 租期起始天数
        /// </summary>
        public int RenStart { get; set; }

        /// <summary>
        /// 租期截止天数
        /// </summary>
        public int RenEnd { get; set; }

        /// <summary>
        /// 地区编号
        /// </summary>
        public string RegionCode { get; set; }

        /// <summary>
        /// 所属国家的编号
        /// </summary>
        public string CountryCode { get; set; }

        /// <summary>
        /// 所属国家的名称（英文名称）
        /// </summary>
        public string CountryName { get; set; }

        /// <summary>
        /// 套餐内容一 （套餐内容最多有六项描述），TODO 后续可以将这个套餐内容封装成一个类型
        /// </summary>
        public string Content1 { get; set; }

        /// <summary>
        /// 套餐内容二 （套餐内容最多有六项描述）
        /// </summary>
        public string Content2 { get; set; }

        /// <summary>
        /// 套餐内容三 （套餐内容最多有六项描述）
        /// </summary>
        public string Content3 { get; set; }

        /// <summary>
        /// 套餐内容四 （套餐内容最多有六项描述）
        /// </summary>
        public string Content4 { get; set; }

        /// <summary>
        /// 套餐内容五 （套餐内容最多有六项描述）
        /// </summary>
        public string Content5 { get; set; }

        /// <summary>
        /// 套餐内容六 （套餐内容最多有六项描述）
        /// </summary>
        public string Content6 { get; set; }

        /// <summary>
        /// AWD列表用^间隔
        /// </summary>
        public string AWDList { get; set; }

        /// <summary>
        /// 是否绑定AWD
        /// </summary>
        public bool AwdDepandant { get; set; }

        /// <summary>
        /// 是否默认套餐
        /// </summary>
        public bool? IsDefault { get; set; }

        /// <summary>
        /// 修改时间
        /// </summary>
        public DateTime ModifyDate { get; set; }

        /// <summary>
        /// 获取套餐包含哪些小图标（在前台显示）
        /// </summary>
        /// <returns></returns>
        public List<string> GetIcons()
        {
            var list = new List<string>();

            if (Content1.IndexOf("LDW/CDW") >= 0)
            {
                list.Add("LDW");
            }

            if (Content2.IndexOf("Taxes") >= 0)
            {
                list.Add("TAX");
            }

            if (Content3.IndexOf("ALI") >= 0)
            {
                list.Add("ALI");
            }


            //注释：后期不对请删除PEP 对应的Content4
            if (Content4.IndexOf("PAI&PEP") >= 0)
            {
                list.Add("PEP");
            }

            if (Content4.IndexOf("GPS") >= 0)
            {
                list.Add("GPS");
            }

            if (Content5.IndexOf("PAI&PEP") >= 0)
            {
                list.Add("PEP");
            }

            if (Content6.IndexOf("1 Tank of Gas") >= 0)
            {
                list.Add("Oil");
            }

            if (Content6.IndexOf("additional driver") >= 0)
            {
                list.Add("AR");
            }

            return list;
        }

        /// <summary>
        /// 获取套餐内容
        /// </summary>
        /// <returns></returns>
        public List<string> GetContent()
        {
            var list = new List<string>();
            if (!string.IsNullOrEmpty(Content1))
            {
                list.Add(Content1);
            }
            if (!string.IsNullOrEmpty(Content2))
            {
                list.Add(Content2);
            }
            if (!string.IsNullOrEmpty(Content3))
            {
                list.Add(Content3);
            }
            if (!string.IsNullOrEmpty(Content4))
            {
                list.Add(Content4);
            }
            if (!string.IsNullOrEmpty(Content5))
            {
                list.Add(Content5);
            }
            if (!string.IsNullOrEmpty(Content6))
            {
                list.Add(Content6);
            }

            return list;
        }

    }
}
